reasoning agent